//这里封装的是axios请求
import axios from 'axios'
//引入cookie函数
import  {getCookie,setCookie} from '../cookie'
//创建axios实例
const servcie = axios.create({
    baseURL:process.env.VUE_APP_BASE_API,//这里的变量名改变之后会无法访问
    timeout: 10000
});

//2.请求拦截器
servcie.interceptors.request.use(config=>{
    //获取cookie里面的token
    const token=getCookie("token");
    //设置token
    if(token){
        config.headers.token=token;
    }
    if(config.url.includes('upload')){
        config.headers['Content-Type']='multipart/form-data'
    }else{
        config.headers['Content-Type']='application/x-www-form-urlencoded'
    }
    //下载文件时，设置返回数据类型
    if(config.url.includes('exportFile')){
        config.responseType='blob'
    }
    return config
},error=>{
    //对请求错误做些什么
    return Promise.reject(error)
})

//3.响应拦截器
servcie.interceptors.response.use(res=>{
    // 2xx范围内的状态码都会触发该函数
    // const data = res.data
    // const status = res.status
    // const token = data.token
    //如果token存在才设置token
    // if(token){
    //     setCookie('token',token)
    // }
    //这里将，返回的信息返回，并存入cookie中
    //这里进行状态码分析

    return res
},error=>{
    //超出2xx范围的状态码都会触发该函数
    if(JSON.stringify(error).includes("timeout")){
        console.log('响应超时')
    }
    if(error&&error.response){
        switch(error.response.status){
            case 400:
                error.message='服务器访问错误'
                break
            case 404:
                error.message="页面不存在"
                break
        }
    }else{

    }
    return Promise.reject(error.message)
})

export default servcie
//export 对应import引入
//module.exports 对应require引入